package com.ten.java.utils;

import org.slf4j.Logger;

/**
 * 日志工具类
 * @author zhangxs
 * @date 2022/6/8 8:53
 */
public class LogUtils {

    private LogUtils() {}

    /**
     * 前缀
     */
    private static final String PREFIX = "<";

    /**
     * 后缀
     */
    private static final String SUFFIX = ">";

    /**
     * 分隔符
     */
    private static final String SEPARATOR = "|";

    /**
     * 接口开始日志
     * @param log Logger对象
     * @param name 接口名称
     * @param trackId 跟踪id
     * @param msgs 打印信息
     */
    public static void apiBegin(Logger log, String name, String trackId, Object... msgs) {
        apiInfo("begin", log, name, trackId, msgs);
    }

    /**
     * 接口结束日志
     * @param log Logger对象
     * @param name 接口名称
     * @param trackId 跟踪id
     * @param msgs 打印信息
     */
    public static void apiEnd(Logger log, String name, String trackId, Object... msgs) {
        apiInfo("end", log, name, trackId, msgs);
    }

    /**
     * 接口异常日志
     * @param log Logger对象
     * @param name 接口名称
     * @param trackId 跟踪id
     * @param msgs 打印信息
     */
    public static void apiError(Logger log, String name, String trackId, Object... msgs) {
        apiInfo("error", log, name, trackId, msgs);
    }

    /**
     * 打印接口info日志
     * @param action 操作，例如开始、结束、异常
     * @param log Logger对象
     * @param name 接口名称
     * @param trackId 跟踪id
     * @param msgs 打印信息
     * @return void
     * @author zhangxs
     * @date 2022/6/9 15:33s
     */
    public static void apiInfo(String action, Logger log, String name, String trackId, Object... msgs) {
        log.info("{} {}(track id: {}), messages:{}", name, action, trackId, StringUtils.join(PREFIX, SUFFIX, SEPARATOR, msgs));
    }
}
